/**
 *
 */
import {
	baseUrl
} from "../config.js"
import store from '@/store/index.js'
import jump from '@/utils/jump/index.js'

// 防止重复跳转到登录页面
let isRedirectingToLogin = false;

export default function(options, toastShow = false) {
	let defaultHeader = {
		'Content-Type': 'application/json;charset=UTF-8',
		'Content-Type': 'application/x-www-form-urlencoded',
		'token': store.state.qxInfo.token
	}
	
	// 定义不需要自动跳转登录的接口列表
	const skipAutoLoginUrls = [
		'/api/common/uploadImg',
		'/api/member.user/updateAvatar',
		'/api/member.user/updateNickname'
	];
	
	// 检查当前接口是否需要跳过自动登录
	const shouldSkipAutoLogin = skipAutoLoginUrls.some(url => options.url.includes(url));
	
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + options.url,
			method: options.method || 'post',
			data: options.data || {},
			header: options.header || defaultHeader,
			dataType: 'json',
			success(res) {
				// console.log(store.state.qxInfo.token)
				if(res.data.code == -1){
					// 如果是需要跳过自动登录的接口，直接返回结果，让调用方处理
					if (shouldSkipAutoLogin) {
						resolve(res.data);
						return;
					}
					
					// 防止重复跳转
					if (isRedirectingToLogin) {
						return;
					}
					isRedirectingToLogin = true;
					
					uni.showToast({
						title:'您还未登录，请先登录',
						icon:"none",
						duration:2500
					})
					setTimeout(()=>{
						store.commit('logout');
						
						// 获取当前页面信息
						const pages = getCurrentPages();
						const currentPage = pages[pages.length - 1];
						
						if (currentPage) {
							// 构建当前页面路径
							let currentUrl = '/' + currentPage.route;
							
							// 获取页面参数
							const currentParams = currentPage.options || {};
							
							// 跳转到登录页面并记录来源
							jump.navigateToLogin(currentUrl, currentParams);
						} else {
							// 无法获取当前页面时，跳转到登录页面
							uni.reLaunch({
								url:"/pages/login/index"
							})
						}
						
						// 重置跳转状态
						setTimeout(() => {
							isRedirectingToLogin = false;
						}, 1000);
					},2500)
				}
				if (toastShow && (res.data.code == 0 || res.data.code == -999 || res.data.code == 2)) {
					uni.showToast({
						title:res.data.msg,
						icon:"none",
						duration:2500
					})
				}
				resolve(res.data)
			},
			fail(err) {
				console.log('接口请求失败：', err);
				// 重置跳转状态
				isRedirectingToLogin = false;
				reject(err)
			}
		})
	})
}
